package com.fivefu.core.data.services;

import com.fivefu.core.data.entity.DbFfskyeyeChannel;
import com.baomidou.mybatisplus.extension.service.IService;


import java.util.List;
import java.util.Map;

/**
 * <p>
 * 通道 服务类
 * </p>
 *
 * @author 
 * @since 2022-09-02 13:38:22
 */
public interface DbFfskyeyeChannelService extends IService<DbFfskyeyeChannel> {

    /**
     * 通过通道唯一标识查询播放地址
     * @param channelCode   通道唯一标识
     * @param protocal      取流协议(共同协议：rtsp,rtmp,hls,海康额外有：hik,ws,大华额外有：FLV_HTTP)
     * @param subType       码流类型(0:主码流,1:辅流1,2:辅流2。默认为0主码流)只有大华有
     * @return
     */
    String queryUrlByChannelCode(String channelCode,String protocal,Integer subType);

    /**
     * 通过通道唯一标识查询相关数据信息
     * @param channelCode  通道唯一标识
     * @return
     */
    DbFfskyeyeChannel queryByChannelCode(String channelCode);


    /**
     * 查询多个通道流地址
     * @param channelCodes  通道唯一标识集（多个用逗号隔开）
     * @param protocal      取流协议(共同协议：rtsp,rtmp,hls,海康额外有：hik,ws,大华额外有：FLV_HTTP)
     * @param subType       码流类型(0:主码流,1:辅流1,2:辅流2。默认为0主码流)只有大华有
     * @return
     */
    Map<String,String> getUrlBychannelCodes(String channelCodes,String protocal,Integer subType);

    /**
     * 查询通道列表
     * @param deleteFlag 删除标识
     * @param platFormCode 平台标识
     */
    List<DbFfskyeyeChannel> queryChannelList(Integer deleteFlag, String platFormCode);

    /**
     * 通道信息汇总入库
     * @param type   设备平台：海康，大华
     * @param userId 用户编号
     */
    void channelCollect(String type,String userId);

    /**
     * 获取视频回放URI
     * @param channelCode    通道唯一标识
     * @param stime          回放开始时间(yyyy-MM-dd HH:mm:ss)
     * @param etime          回放结束时间(yyyy-MM-dd HH:mm:ss)
     * @param scheme         协议类型，共有：rtsp、rtmp、hls三种,海康额外：hik,ws(海康默认hik,大华默认rtsp)
     * @return
     */
    String queryPlaybackURI(String channelCode, String stime, String etime, String scheme);

    /**
     * 编辑通道
     * @param channel 通道信息
     * @param userid 操作用户编号
     */
    Long editChannelById(DbFfskyeyeChannel channel, String userid);

    /**
     * 删除通道
     * @param channelId 通道编号
     * @param userid 操作用户编号
     */
    void deleteChannelById(Long channelId, String userid);

    /**
     * 根据设备id查询通道集合
     * @param deviceId   设备id
     * @return
     */
    List<DbFfskyeyeChannel> queryChannelListByDeviceId(Long deviceId);

    /**
     * 同步通道在线状态
     * @param platformName 设备平台：海康，大华
     * @param userId 用户编号
     */
    void synChannelOnlineStatus(String platformName,String userId);

}
